home *** CD-ROM | disk | FTP | other *** search
- LISTING 4
-
- #include <stdio.h>
- #include <stat.h>
- #include <string.h>
- #include <fcntl.h>
- #include <Mrm/MrmAppl.h>
-
- extern char *malloc();
- extern void set_window_title();
-
- #define MAX_FILEN_LEN 128
- char filename[MAX_FILEN_LEN];
- Widget textwidget;
-
- void
- create_text_widget(w, client_data, call_data)
- Widget w;
- caddr_t client_data;
- caddr_t call_data;
- {
- textwidget = w;
- }
-
- void
- load_file(w, client_data, call_data)
- Widget w;
- caddr_t client_data;
- XmFileSelectionBoxCallbackStruct *call_data;
- {
- FILE *fp;
- char *charptr;
- char *textbuf;
- struct stat statbuf;
-
- XmStringGetLtoR(call_data->value, XmSTRING_DEFAULT_CHARSET, &charptr);
- XtDestroyWidget(w);
- strcpy(filename, charptr);
- fp = fopen(filename, "r");
- fstat(fileno(fp), &statbuf);
- textbuf = malloc(statbuf.st_size);
- fread(textbuf, statbuf.st_size, 1, fp);
- XmTextSetString(textwidget, textbuf);
- free(textbuf);
- fclose(fp);
- set_window_title(filename);
- }
-
- void
- save_file(w, client_data, call_data)
- Widget w;
- caddr_t client_data;
- XmFileSelectionBoxCallbackStruct *call_data;
- {
- FILE *fp;
- char *textbuf;
-
- textbuf = XmTextGetString(textwidget);
- fp = fopen(filename, "w");
- fwrite(textbuf, strlen(textbuf), 1, fp);
- fclose(fp);
- XtFree(textbuf);
- }
-
- void
- saveas_file(w, client_data, call_data)
- Widget w;
- caddr_t client_data;
- XmSelectionBoxCallbackStruct *call_data;
- {
- FILE *fp;
- char *textbuf;
- char *charptr;
-
- textbuf = XmTextGetString(textwidget);
- XmStringGetLtoR(call_data->value, XmSTRING_DEFAULT_CHARSET, &charptr);
- strcpy(filename, charptr);
- fp = fopen(filename, "w");
- fwrite(textbuf, strlen(textbuf), 1, fp);
- fclose(fp);
- XtFree(textbuf);
- set_window_title(filename);
- }
-
- void
- new_buffer(w, client_data, call_data)
- Widget w;
- caddr_t client_data;
- caddr_t call_data;
- {
- strcpy(filename, "");
- XmTextSetString(textwidget, "");
- set_window_title("Untitled");
- }
-
- void
- exit_editor(w, client_data, call_data)
- Widget w;
- caddr_t client_data;
- caddr_t call_data;
- {
- exit(0);
- }
-